#ifndef __POWER_H
#define __POWER_H

#define POWER_UART			LPC_UART1

#define POWER_INTERVAL	1000 //интервал измерений 

#define POWER_RTS_PORT	LPC_GPIO2
#define POWER_RTS_PIN		3

#define POWER_RTS_LOW		(POWER_RTS_PORT->FIOPIN &= ~(1<<POWER_RTS_PIN))
#define POWER_RTS_HIGH	(POWER_RTS_PORT->FIOPIN |= (1<<POWER_RTS_PIN))

#define POWER_FIRSTBYTE_TIMEOUT		100 //Таймаут - сколько ждем первый байт с платы мощности
#define POWER_TIMEOUT							500	//А это общий таймаут	

//Структура данных, приходящих с платы мощности
typedef struct
{
	U16 powerFull;
	U16 powerActive;
	U16 voltageA;
	U16 currentA;
	U16 voltageB;
	U16 currentB;
	U16 voltageC;
	U16 currentC;
}
PowerT;

typedef struct 
{
	U8 powerFull[3];
	U8 powerActive[3];
	U8 voltageA[3];
	U8 currentA[3];
	U8 voltageB[3];
	U8 currentB[3];
	U8 voltageC[3];
	U8 currentC[3];
}
PowerNewT;

typedef struct
{
	U32 powerFull;
	U32 powerActive;
	U32 voltageA;
	U32 currentA;
	U32 voltageB;
	U32 currentB;
	U32 voltageC;
	U32 currentC;
	
	U16 count; //Счетчик
}
PowerStoreT;


typedef enum {POWER_IDLE, POWER_WAIT_FIRST_BYTE, POWER_WAIT_DATA} PowerStateT;

/*
	Прототипы функций
*/
extern void power_prc(void);
extern void power_init(void);
void power_uart_init(void);
void power_send_char(U8 ch);
extern PowerT power_get_average(void);

#endif
